package com.projet.whattowatch.objet;

import java.util.ArrayList;

public class LibUtilisateur
{

		private ArrayList<Utilisateur> listUtilisateur;

		public LibUtilisateur() {
			this.listUtilisateur = new ArrayList<Utilisateur>();
		}

		public ArrayList<Utilisateur> getlistUtilisateur() {
			return this.listUtilisateur;
		}

		public Utilisateur getUtilisateur(String id) {

			String[] idTable = id.split("-");
			String monAdresseMail = idTable[0];

			for (int i = 0; i < listUtilisateur.size(); i++) {
				if (listUtilisateur.get(i).getAdresseMail().compareTo(monAdresseMail) == 0) {
					return listUtilisateur.get(i);
				}
			}
			return null;
		}

		public Utilisateur getUtilisateur(int index) {
			return listUtilisateur.get(index);
		}

		public boolean remove(Utilisateur monUtilisateur) {
			return listUtilisateur.remove(monUtilisateur);
		}

		public void addUtilisateur(Utilisateur monUtilisateur) {
			int debut = 0;
			int fin = this.getlistUtilisateur().size() - 1;
			recAddUtilisateur(debut, fin, monUtilisateur);
		}

		public void recAddUtilisateur(int debut, int fin, Utilisateur monUtilisateur) {
			int milieu = (fin + debut) / 2;
			if (fin < 0) {
				listUtilisateur.add(milieu, monUtilisateur);
			} else if (fin == 0) {
				if (monUtilisateur.compareTo(listUtilisateur.get(milieu)) > 0) {
					listUtilisateur.add(milieu, monUtilisateur);
				} else {
					listUtilisateur.add(monUtilisateur);
				}
			} else if (monUtilisateur.compareTo(listUtilisateur.get(milieu)) > 0) {
				if (debut == milieu) {
					listUtilisateur.add(milieu, monUtilisateur);
				} else
					recAddUtilisateur(debut, milieu, monUtilisateur);
			} else {
				if (milieu == debut) {
					if (monUtilisateur.compareTo(listUtilisateur.get(fin)) > 0) {
						listUtilisateur.add(fin, monUtilisateur);
					} else {
						listUtilisateur.add(monUtilisateur);
					}
				} else
					recAddUtilisateur(milieu, fin, monUtilisateur);
			}
		}
	}

